home *** CD-ROM | disk | FTP | other *** search
/ Tech Arsenal 1 / Tech Arsenal (Arsenal Computer).ISO / tek-11 / clipscrl.zip / CLIPSCRL.ASM < prev    next >
Assembly Source File  |  1993-01-04  |  7KB  |  176 lines

  1.  
  2. ;=============================================================================
  3. ;
  4. ; Filename: CLIPSCRL.ASM
  5. ; Author..: Tim Shriver; Softech International, Inc. (301) 890-4054
  6. ; Address.:              14241 Ballinger Terrace
  7. ;                        Laurel, MD  20707
  8. ; Date....: November 18, 1986
  9. ; Notice..: This program is donated as Shareware.  ClipScrl works and I'm 
  10. ;           sure it could be written better.  I am not an assembly programmer
  11. ;           and would like to here any suggestions for improving the code.  
  12. ;           If you find these routines to be helpful please send $5.00 to 
  13. ;           the address shown above.  Look for other clipper utilities on this
  14. ;           BBS from Softech in the near future.  Thank you for your support. 
  15. ; Notes...: User-defined dBASE functions in 8086 assembly for Clipper.  
  16. ;
  17. ;
  18. ;   Procedures not in dBASE III or Clipper:
  19. ;      SCRLUP() ::= Scroll Active Display Page Up
  20. ;      SCRLDOWN () ::= Scroll Active Display Page Down
  21.  
  22. NAME    CLIPSCRL
  23.  
  24. EXTRN   _PARNI:far
  25. EXTRN   _RETNI:far
  26.  
  27. DGROUP  GROUP   datasg
  28. datasg  SEGMENT PUBLIC  'DATA'
  29.         HOLDbh   db      0
  30.         HOLDch   db      0
  31.         HOLDcl   db      0
  32.         HOLDdh   db      0
  33.         HOLDdl   db      0
  34. datasg  ends
  35.  
  36. _PROG   SEGMENT BYTE
  37.         ASSUME  CS:_PROG,DS:DGROUP,ES:DGROUP
  38.  
  39.         PUBLIC  SCRLUP
  40.         PUBLIC  SCRLDOWN
  41.  
  42. ;------------------------------------------------------------------------------
  43. ;  Syntax: SCRLUP (<expN1>,<expN2>,<expN3>,<expN4>,<expN5>,<expN6>)
  44. ;  Parms : expN1: Number of lines to scroll up
  45. ;          expN2: Row of upper left corner of scroll 
  46. ;          expN3: Col of upper left corner of scroll 
  47. ;          expN4: Row of lower right corner of scroll 
  48. ;          expN5: Col of lower right corner of scroll 
  49. ;          expN6: Attribute to be used on blank lines at bottom of scroll
  50.  
  51. SCRLUP        proc    far
  52.               push    bp          ; save bp
  53.               mov     bp,sp       ; get  stack/parameter pointer
  54.               push    ds          ; save ds
  55.               push    es          ; save es
  56.  
  57.               mov     ax,6        ; get address of parameter
  58.               push    ax          ; put parameter on stack
  59.               call    _PARNI      ; put integer in ax
  60.               add     sp,2        ; fix up stack
  61.               mov     HOLDbh,al   ; save integer to data
  62.  
  63.               mov     ax,5        ; get address of parameter
  64.               push    ax          ; put parameter on stack
  65.               call    _PARNI      ; put integer in ax
  66.               add     sp,2        ; fix up stack
  67.               mov     HOLDdl,al   ; save integer to data
  68.  
  69.               mov     ax,4        ; get address of parameter
  70.               push    ax          ; put request parm on stack
  71.               call    _PARNI      ; get integer an put in ax
  72.               add     sp,2        ; fix up stack
  73.               mov     HOLDdh,al   ; save integer to data
  74.   
  75.               mov     ax,3        ; get address of parameter
  76.               push    ax          ; put requested parm on stack
  77.               call    _PARNI      ; get integer and put in ax
  78.               add     sp,2        ; fix up stack
  79.               mov     HOLDcl,al   ; save integer to data
  80.  
  81.               mov     ax,2        ; get address of parameter
  82.               push    ax          ; put requested parm on stack
  83.               call    _PARNI      ; get integer and put in ax
  84.               add     sp,2        ; fix up stack
  85.               mov     HOLDch,al   ; get parameter value
  86.  
  87.               mov     ax,1        ; get address of parameter
  88.               push    ax          ; put requested parm on stack
  89.               call    _PARNI      ; get integer and put in ax
  90.               add     sp,2        ; fix up stack
  91.  
  92.               mov     bh,HOLDbh
  93.               mov     ch,HOLDch
  94.               mov     cl,HOLDcl 
  95.               mov     dh,HOLDdh
  96.               mov     dl,HOLDdl 
  97.  
  98.               mov     ah,06       ; service code
  99.               int     16          ; interrupt  - request service
  100.               pop     es          ; restore es
  101.               pop     ds          ; restore ds
  102.               pop     bp          ; restore bp
  103.               ret                 ; return to caller
  104.  
  105. SCRLUP  endp
  106.  
  107. ;------------------------------------------------------------------------------
  108. ;  Syntax: SCRLDOWN (<expN1>,<expN2>,<expN3>,<expN4>,<expN5>,<expN6>)
  109. ;  Parms : expN1: Number of lines to scroll up
  110. ;          expN2: Row of upper left corner of scroll 
  111. ;          expN3: Col of upper left corner of scroll 
  112. ;          expN4: Row of lower right corner of scroll 
  113. ;          expN5: Col of lower right corner of scroll 
  114. ;          expN6: Attribute to be used on blank lines at bottom of scroll
  115.  
  116. SCRLDOWN      proc    far
  117.               push    bp          ; save bp
  118.               mov     bp,sp       ; get  stack/parameter pointer
  119.               push    ds          ; save ds
  120.               push    es          ; save es
  121.  
  122.               mov     ax,6        ; get address of parameter
  123.               push    ax          ; put parameter on stack
  124.               call    _PARNI      ; put integer in ax
  125.               add     sp,2        ; fix up stack
  126.               mov     HOLDbh,al   ; save integer to data
  127.  
  128.               mov     ax,5        ; get address of parameter
  129.               push    ax          ; put parameter on stack
  130.               call    _PARNI      ; put integer in ax
  131.               add     sp,2        ; fix up stack
  132.               mov     HOLDdl,al   ; save integer to data
  133.  
  134.               mov     ax,4        ; get address of parameter
  135.               push    ax          ; put request parm on stack
  136.               call    _PARNI      ; get integer an put in ax
  137.               add     sp,2        ; fix up stack
  138.               mov     HOLDdh,al   ; save integer to data
  139.   
  140.               mov     ax,3        ; get address of parameter
  141.               push    ax          ; put requested parm on stack
  142.               call    _PARNI      ; get integer and put in ax
  143.               add     sp,2        ; fix up stack
  144.               mov     HOLDcl,al   ; save integer to data
  145.  
  146.               mov     ax,2        ; get address of parameter
  147.               push    ax          ; put requested parm on stack
  148.               call    _PARNI      ; get integer and put in ax
  149.               add     sp,2        ; fix up stack
  150.               mov     HOLDch,al   ; get parameter value
  151.  
  152.               mov     ax,1        ; get address of parameter
  153.               push    ax          ; put requested parm on stack
  154.               call    _PARNI      ; get integer and put in ax
  155.               add     sp,2        ; fix up stack
  156.  
  157.               mov     bh,HOLDbh
  158.               mov     ch,HOLDch
  159.               mov     cl,HOLDcl 
  160.               mov     dh,HOLDdh
  161.               mov     dl,HOLDdl 
  162.  
  163.               mov     ah,07       ; service code
  164.               int     16          ; interrupt  - request service
  165.               pop     es          ; restore es
  166.               pop     ds          ; restore ds
  167.               pop     bp          ; restore bp
  168.               ret                 ; return to caller
  169.  
  170. SCRLDOWN  endp
  171.  
  172. _PROG ENDS
  173.  
  174.          END
  175.  
  176. ; EOF CLIPSCRL.asm ------------------------------------------------------------